package init_project

import (
	"encoding/json"
	"fmt"
	"go_auto/general/format_dispose"
	"os"
	"strings"
)

var ProjectConfig = format_dispose.NewDict()

// 多层配置值设置
func setValueifEnv(key string, value interface{}) {

	// 判断变量大写的，环境变量值是否存在，存在则使用环境变量的值
	env_value_key := strings.ToUpper(value.(string))
	val, exists := os.LookupEnv(env_value_key)
	if exists {
		value = val
	} else {
		value = "default_value"
	}

	ProjectConfig.Set(key, value)
}

// 初始化配置
func InitConfig() {

	var configMap map[string]interface{}

	// 读取配置文件
	configFile, err := os.Open("config.json")
	if err != nil {
		panic(err)
	}
	defer configFile.Close()

	err = json.NewDecoder(configFile).Decode(&configMap)
	if err != nil {
		panic(fmt.Sprintf("could not parse config file: %v", err))
	}

	for key, value := range configMap {
		setValueifEnv(key, value)
	}
	fmt.Printf("Parsed config file: %v\n", configMap)

}
